#ifndef _SOCKETFACTORY_H
#define _SOCKETFACTORY_H

#pragma once
#include "Socket.h"
#include "ClientSocket.h"
#include "ServerSocket.h"
#include <string>

using namespace std;

namespace net
{
/*
 * This is an interface to define the basic behaviour of a factory for
 * creating sockets.
 * Implementation specific code must be placed in the factory class
 * implementing this interface.
 */
class SocketFactory
{
public:
	SocketFactory(void);
	virtual ~SocketFactory(void);
	virtual Socket* createSocket(void)=0;
	virtual ClientSocket* createClientSocket(string, string)=0;
	virtual ServerSocket* createServerSocket(int)=0;
	virtual void release(void)=0;
};
};

#endif
